public class linkQueue<T> {
    private Node<T> front,rear;
    private int length;
//    构造一个空的队列
    public linkQueue()
    {
        length=0;
        front=rear=new Node<T>(null);
    }
//    在队列的队尾插入一个新的元素
    public void EnQueue(T obj)
    {
        rear=rear.next=new Node<T>(obj,null);
        length++;
    }
//    删除队列队头元素
    public T DeQueue()
    {
        if (isEmpty()){
            System.out.println("队列已空，无法出队");
            return null;
        }
        Node<T> p = front.next;
        T x = p.data;
        front.next=p.next;
        length--;
        if (front.next ==null){
            rear = front;
        }
        return x;
    }
//    取队列队头元素
    public T getHead()
    {
        if (isEmpty()){
            System.out.println("队列已空，无法出队");
            return null;
        }
        return front.next.data;
    }
//    求出队列中数据元素的个数
    public int size()
    {
        return length;
    }
//    判空
    public boolean isEmpty()
    {
        return front.next==null;
    }
//    依次输出元素
    public void nextOrder()
    {
        Node<T> p =front.next;
        while(p!=null){
            System.out.println(p.data);
            p=p.next;
        }
    }
//    销毁
    public void clear()
    {
        front.next=rear.next=null;
    }
}
